﻿
/**
 * nPnP - neither Perl not PHP
 *
 * Copyright (C) 2009 Christian Moeller
 *
 * This program is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU General Public License as published by the 
 * Free Software Foundation; either version 3 of the License, or (at your option) 
 * any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program; 
 * if not, see <http://www.gnu.org/licenses/>.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FParser.Parser;

namespace FParser.Runtime
{

    public class MethodCache
    {
        public MethodCache() { 
            this.mCache = new Dictionary<string, List<Expression>>();
            this.extLibs = new Dictionary<string, ExternalLibraryCall>();
        }

        private Dictionary<string, List<Expression>> mCache;
        public Dictionary<string, List<Expression>> Cache
        {
            get { return this.mCache; }
            set { this.mCache = value; }
        }

        public Dictionary<string, ExternalLibraryCall> extLibs;
        public Dictionary<string, ExternalLibraryCall> ExtLibs
        {
            get { return this.extLibs; }
            set { this.extLibs = value; }
        }

        public List<Expression> this[string key]
        {
            get
            {
                if (this.mCache.ContainsKey(key))
                    return this.mCache[key];
                else
                    return null;
            }

            set
            {
                if (!this.mCache.ContainsKey(key))
                    this.mCache.Add(key, value);
                else
                    this.mCache[key] = value;
            }
        }
    }
}
